[Amazon FSx for NetApp ONTAP] CIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できるか確認してみた
ワークグループじゃないとローカルユーザーで認証できないとかあるのかな
こんにちは、のんピ(@non____97)です。
皆さんは「Amazon Fsx for NetApp ONTAP(以降FSx for ONTAP)のCIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できるか」と気になったことはありますか? 私はあります。
以前、ワークグループのCIFSサーバー上のCIFSファイル共有に対して、CIFSのローカルユーザーの認証情報を使ってアクセスしたことがあります。
ワークグループのCIFSサーバーをドメイン参加させることもしたことあるのですが、その際、ローカルユーザーで引き続き認証できるかは確認していませんでした。
気になったので検証してみました。
いきなりまとめ
- FSx for ONTAPのCIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できる
- NTFS ACLでCIFSサーバーのローカルユーザーに対して権限を与えることも可能
検証環境
検証環境は以下の通りです。
CIFSサーバーがドメイン参加している状態でSVM上にCIFSのローカルユーザーを作成し、ローカルユーザーの認証情報を使ってCIFSファイル共有にアクセスできることを確認します。
AD DCについては以下記事の検証で使用したものを流用します。
SVM上にCIFSのローカルユーザーを作成
まず、SVM上にCIFSのローカルユーザーを作成します。
今回はcifs-user
というユーザーを作成しました。
# CIFSサーバーがドメインに参加していることを確認 FsxId0edb8330826eb8118::> cifs show -vserver svm1 Vserver: svm1 CIFS Server NetBIOS Name: SVM1 NetBIOS Domain/Workgroup Name: CORP Fully Qualified Domain Name: CORP.NON-97.NET Organizational Unit: OU=FSxForONTAP,DC=corp,DC=non-97,DC=net Default Site Used by LIFs Without Site Membership: Workgroup Name: - Authentication Style: domain CIFS Server Administrative Status: up CIFS Server Description: List of NetBIOS Aliases: - # CIFSのローカルユーザーを作成 FsxId0edb8330826eb8118::> cifs users-and-groups local-user create -vserver svm1 -user-name cifs-user -is-account-disabled false Enter the password: Confirm the password: # CIFSのローカルユーザーが作成されたことを確認 FsxId0edb8330826eb8118::> cifs users-and-groups local-user show -vserver svm1 -instance Vserver: svm1 User Name: SVM1\Administrator Full Name: Description: Built-in administrator account Is Account Disabled: true Vserver: svm1 User Name: SVM1\cifs-user Full Name: - Description: - Is Account Disabled: false 2 entries were displayed.
CIFSファイル共有の作成
次に、CIFSファイル共有を作成します。
今回は/vol1
をパスとするcifs-share
というCIFSファイル共有を作成します。
# ボリュームのジャンクションパスを確認 FsxId0edb8330826eb8118::> volume show -fields junction-path -vserver svm1 vserver volume junction-path ------- --------- ------------- svm1 svm1_root / svm1 svm1_vol1 /vol1 svm1 svm1_vol2 /vol2 svm1 svm1_vol3 /vol1/vol3 4 entries were displayed. # CIFSファイル共有の作成 FsxId0edb8330826eb8118::> cifs share create -vserver svm1 -share-name cifs-share -path /vol1 # CIFSファイル共有が作成されたことを確認 FsxId0edb8330826eb8118::> cifs share show -vserver svm1 Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- svm1 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm1 cifs-share /vol1 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 ipc$ / browsable - - 3 entries were displayed.
CIFSのローカルユーザーの認証情報でCIFSファイル共有にアクセス
それでは、CIFSのローカルユーザーの認証情報でCIFSファイル共有にアクセスします。
アクセス元のクライアントはもちろんドメイン不参加です。また、CIFSファイル共有の権限はEveryoneでフルコントロールになっています。
FsxId0edb8330826eb8118::> cifs share access-control show -vserver svm1 Share User/Group User/Group Access Vserver Name Name Type Permission -------------- ----------- --------------------------- ----------- ----------- svm1 c$ BUILTIN\Administrators windows Full_Control svm1 cifs-share Everyone windows Full_Control 2 entries were displayed.
CIFSファイル共有cifs-share
をZドライブにマウントします。
# ワークグループであることを確認 > Get-WMIObject Win32_ComputerSystem Domain : WORKGROUP Manufacturer : Amazon EC2 Model : t3.micro Name : EC2AMAZ-32078P3 PrimaryOwnerName : EC2 TotalPhysicalMemory : 1043886080 # 現在のユーザーを確認 > whoami ec2amaz-32078p3\ssm-user # ZドライブにCIFSファイル共有をマウント > net use Z: \\svm-031f39baab78abb88.fs-0edb8330826eb8118.fsx.us-east-1.amazonaws.com\cifs-share The password is invalid for \\svm-031f39baab78abb88.fs-0edb8330826eb8118.fsx.us-east-1.amazonaws.com\cifs-share. Enter the user name for 'svm-031f39baab78abb88.fs-0edb8330826eb8118.fsx.us-east-1.amazonaws.com': cifs-user Enter the password for svm-031f39baab78abb88.fs-0edb8330826eb8118.fsx.us-east-1.amazonaws.com: The command completed successfully. # ZドライブにCIFSファイル共有をマウントできたことを確認 > Get-PSDrive Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- Alias Alias C 13.68 16.32 FileSystem C:\ Windows\system32 Cert Certificate \ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan Z 0.00 0.95 FileSystem \\svm-031f39baab78abb88.fs-0edb8...
CIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できました。
NTFS ACLでCIFSのローカルユーザーに対してアクセス制御できるか
Domain Adminsのみフルコントロールを与えた場合
おまけで、NTFS ACLでCIFSのローカルユーザーに対してアクセス制御できるか確認してみます。
まず、許可するグループをDomain Adminsのみにした場合の挙動を確認します。
AD DCでドメインのAdministratorでログインして、CIFSファイル共有をZドライブにマウントします。
# ドメインのAdministratorであることを確認 > whoami corp\administrator # ドメインに参加していることを確認 > Get-WMIObject Win32_ComputerSystem Domain : corp.non-97.net Manufacturer : Amazon EC2 Model : t3.micro Name : EC2AMAZ-75JBQCK PrimaryOwnerName : EC2 TotalPhysicalMemory : 1043886080 # ZドライブにCIFSファイル共有をマウント > net use Z: \\SVM1.corp.non-97.net\cifs-share The command completed successfully.
次にCIFSファイル共有にDomain Adminsへのフルコントロールを与えます。
# 現在のNTFS ACLの確認 > Get-Acl Z:\ | Format-Table -AutoSize -Wrap Directory: Path Owner Access ---- ----- ------ Z:\ BUILTIN\Administrators Everyone Allow FullControl Everyone Allow 268435456 # CIFSファイル共有の現在のNTFS ACLを取得 > $folder_path = "Z:\" > $acl = Get-acl $folder_path # 許可したいグループもしくはユーザーの名前 > $group_or_user_name = "CORP\Domain Admins" # フルコントロールを許可 > $permission = ($group_or_user_name, "FullControl", "ContainerInherit" ,"None" ,"Allow") # ACEの作成 > $access_rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission # ACEをNTFS ACLに設定 > $acl.SetAccessRule($access_rule) # NTFS ACLの適用 > $acl | Set-Acl $folder_path # 現在のNTFS ACLを確認 > Get-acl $folder_path | Format-Table -AutoSize -Wrap Directory: Path Owner Access ---- ----- ------ Z:\ BUILTIN\Administrators Everyone Allow FullControl Everyone Allow 268435456 CORP\Domain Admins Allow FullControl
確かにDomain Adminsのフルコントロールの許可が追加されました。
次に、Everyoneに対しての許可を削除します。
# 現在のNTFS ACLを取得 > $acl = Get-acl $folder_path # 削除するACEを取得 > $remove_rule = $acl.Access | Where-Object { $_.IdentityReference -eq 'Everyone' } # ACEの削除 > $remove_rule | ForEach-Object { $acl.RemoveAccessRule($_) } # NTFS ACLの適用 > $acl | Set-Acl $folder_path # 現在のNTFS ACLを確認 > Get-acl $folder_path | Format-Table -AutoSize -Wrap Directory: Path Owner Access ---- ----- ------ Z:\ BUILTIN\Administrators CORP\Domain Admins Allow FullControl
Domain Adminsへのフルコントロールの許可のみになりました。
この状態で、CIFSのローカルユーザーでCIFSファイル共有をマウントしているZドライブ配下を表示してみます。
> ls Z:\ ls : Access to the path 'Z:\' is denied. At line:1 char:1 + ls Z:\ + ~~~~~~ + CategoryInfo : PermissionDenied: (Z:\:String) [Get-ChildItem], UnauthorizedAccessException + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
PermissionDenied
としっかり怒られましたね。NTFS ACLが正しく動作していることが分かります。
CIFSのローカルユーザーへの読み取りと実行権限をNTFS ACLに設定
次にCIFSのローカルユーザーへの読み取りと実行権限をNTFS ACLに設定した時の動作を確認します。
エクスプローラーからCIFSファイル共有をマウントしているZドライブ上でプロパティを開き、NTFS ACLの設定をします。
ロケーションをCIFSサーバーにしてCIFSのローカルユーザー名を入力しCheck Names
をクリックすると、作成したCIFSのローカルユーザーが選択できました。
読み取りと実行権限を設定します。
設定後、PowerShellからもNTFS ACLを確認してみます。
> Get-acl $folder_path | Format-Table -AutoSize -Wrap Directory: Path Owner Access ---- ----- ------ Z:\ BUILTIN\Administrators S-1-5-21-2765139605-3334426874-4031651164-1000 Allow ReadAndExecute, Synchronize CORP\Domain Admins Allow FullControl
CIFSのローカルユーザーであろうSIDに対して、読み取りと実行権限が許可されていますね。
この状態で、CIFSのローカルユーザーでCIFSファイル共有をマウントしているZドライブ配下で読み書きしてみます。
# Zドライブ配下の読み込み > ls Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----l 11/17/2022 3:09 AM vol3 # Zドライブ配下の書き込み > echo test > Z:\test.text out-file : Access to the path 'Z:\test.text' is denied. At line:1 char:1 + echo test > Z:\test.text + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
NTFS ACLで定義した通り、読み込みはできて書き込みは拒否されました。
CIFSのローカルユーザーへのフルコントロールをNTFS ACLに設定
最後に、CIFSのローカルユーザーへのフルコントロールをNTFS ACLに設定した際の挙動を確認します。
先ほどと同様にエクスプローラーからCIFSのローカルユーザーへのフルコントロールをNTFS ACLに設定します。
設定後、PowerShellからNTFS ACLを確認します。
> Get-acl $folder_path | Format-Table -AutoSize -Wrap Directory: Path Owner Access ---- ----- ------ Z:\ BUILTIN\Administrators S-1-5-21-2765139605-3334426874-4031651164-1000 Allow FullControl CORP\Domain Admins Allow FullControl
CIFSのローカルユーザーへのフルコントロールが許可されたことが分かります。
この状態で、CIFSのローカルユーザーでCIFSファイル共有をマウントしているZドライブ配下で読み書きしてみます。
# Zドライブ配下の書き込み > echo test > Z:\test.text # 書き込みできたか確認 > ls Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----l 11/17/2022 3:09 AM vol3 -a---- 11/17/2022 8:51 AM 14 test.text
書き込みできましたね。
ローカルユーザーに対して権限を割り当てさえすればアクセスできる
FSx for ONTAPのCIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できることを確認しました。
逆に言えば、NTFS ACLやCIFSファイル共有の権限でしっかりと絞ってあげなければ、思わぬ抜け穴になりそうです。(Everyoneで運用することはないと思いますが)
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!